/**
 * @author derek(derek @ intoms.com)
 * @version 创建时间：2008-9-30 下午02:51:25
 * 类说明
 */
package com.hy.mvc.domain.dataobject.base;

import java.util.Set;

/**
 * Cache的基类
 */
public interface Cache {
    /**
     * 从cache取某个节点
     * @param <T>
     * @param key
     * @return
     */
    <T> T get(String key);

    /**
     * 从cache取计数器的值
     * @param <T>
     * @param key
     * @return
     */
    long getCounter(String key);

    /**
     * 将某个节点保存到cache中
     * @param <T>
     * @param key
     * @param value
     */
    <T> boolean set(String key, T value);

    /**
     * 写入计数器的值
     * @param <T>
     * @param key
     * @param value
     * @return
     */
    boolean storeCounter(String key, long value);

    /**
     * 在cache中删除某个节点
     * @param key
     */
    boolean remove(String key);

    /**
     * 是否存在这个主键的节点
     * @param key
     * @return
     */
    boolean has(String key);

    /**
     * 得到能遍历当前cache内所有数据的迭代器
     * @param <T>
     * @return null表示不支持这种操作
     */
    <T> Set<String> keySet();

    /**
     * 清空cache内的数据
     * @return 清除的个数，-1表示不支持这种操作
     */
    int clear();

    /**
     * 返回cache内的元素个数
     * @return
     */
    int size();
}
 